home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / i2c / tps65010.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.9 KB  |  187 lines

  1. /* linux/i2c/tps65010.h
  2.  *
  3.  * Functions to access TPS65010 power management device.
  4.  *
  5.  * Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com>
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify it
  8.  * under the terms of the GNU General Public License as published by the
  9.  * Free Software Foundation; either version 2 of the License, or (at your
  10.  * option) any later version.
  11.  *
  12.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  13.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  14.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
  15.  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  16.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  17.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  18.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  19.  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  20.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  21.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  22.  *
  23.  * You should have received a copy of the  GNU General Public License along
  24.  * with this program; if not, write  to the Free Software Foundation, Inc.,
  25.  * 675 Mass Ave, Cambridge, MA 02139, USA.
  26.  */
  27.  
  28. #ifndef __LINUX_I2C_TPS65010_H
  29. #define __LINUX_I2C_TPS65010_H
  30.  
  31. /*
  32.  * ----------------------------------------------------------------------------
  33.  * Registers, all 8 bits
  34.  * ----------------------------------------------------------------------------
  35.  */
  36.  
  37. #define    TPS_CHGSTATUS        0x01
  38. #    define    TPS_CHG_USB        (1 << 7)
  39. #    define    TPS_CHG_AC        (1 << 6)
  40. #    define    TPS_CHG_THERM        (1 << 5)
  41. #    define    TPS_CHG_TERM        (1 << 4)
  42. #    define    TPS_CHG_TAPER_TMO    (1 << 3)
  43. #    define    TPS_CHG_CHG_TMO        (1 << 2)
  44. #    define    TPS_CHG_PRECHG_TMO    (1 << 1)
  45. #    define    TPS_CHG_TEMP_ERR    (1 << 0)
  46. #define    TPS_REGSTATUS        0x02
  47. #    define    TPS_REG_ONOFF        (1 << 7)
  48. #    define    TPS_REG_COVER        (1 << 6)
  49. #    define    TPS_REG_UVLO        (1 << 5)
  50. #    define    TPS_REG_NO_CHG        (1 << 4)    /* tps65013 */
  51. #    define    TPS_REG_PG_LD02        (1 << 3)
  52. #    define    TPS_REG_PG_LD01        (1 << 2)
  53. #    define    TPS_REG_PG_MAIN        (1 << 1)
  54. #    define    TPS_REG_PG_CORE        (1 << 0)
  55. #define    TPS_MASK1        0x03
  56. #define    TPS_MASK2        0x04
  57. #define    TPS_ACKINT1        0x05
  58. #define    TPS_ACKINT2        0x06
  59. #define    TPS_CHGCONFIG        0x07
  60. #    define    TPS_CHARGE_POR        (1 << 7)    /* 65010/65012 */
  61. #    define    TPS65013_AUA        (1 << 7)    /* 65011/65013 */
  62. #    define    TPS_CHARGE_RESET    (1 << 6)
  63. #    define    TPS_CHARGE_FAST        (1 << 5)
  64. #    define    TPS_CHARGE_CURRENT    (3 << 3)
  65. #    define    TPS_VBUS_500MA        (1 << 2)
  66. #    define    TPS_VBUS_CHARGING    (1 << 1)
  67. #    define    TPS_CHARGE_ENABLE    (1 << 0)
  68. #define    TPS_LED1_ON        0x08
  69. #define    TPS_LED1_PER        0x09
  70. #define    TPS_LED2_ON        0x0a
  71. #define    TPS_LED2_PER        0x0b
  72. #define    TPS_VDCDC1        0x0c
  73. #    define    TPS_ENABLE_LP        (1 << 3)
  74. #define    TPS_VDCDC2        0x0d
  75. #define    TPS_VREGS1        0x0e
  76. #    define    TPS_LDO2_ENABLE    (1 << 7)
  77. #    define    TPS_LDO2_OFF    (1 << 6)
  78. #    define    TPS_VLDO2_3_0V    (3 << 4)
  79. #    define    TPS_VLDO2_2_75V    (2 << 4)
  80. #    define    TPS_VLDO2_2_5V    (1 << 4)
  81. #    define    TPS_VLDO2_1_8V    (0 << 4)
  82. #    define    TPS_LDO1_ENABLE    (1 << 3)
  83. #    define    TPS_LDO1_OFF    (1 << 2)
  84. #    define    TPS_VLDO1_3_0V    (3 << 0)
  85. #    define    TPS_VLDO1_2_75V    (2 << 0)
  86. #    define    TPS_VLDO1_2_5V    (1 << 0)
  87. #    define    TPS_VLDO1_ADJ    (0 << 0)
  88. #define    TPS_MASK3        0x0f
  89. #define    TPS_DEFGPIO        0x10
  90.  
  91. /*
  92.  * ----------------------------------------------------------------------------
  93.  * Macros used by exported functions
  94.  * ----------------------------------------------------------------------------
  95.  */
  96.  
  97. #define LED1  1
  98. #define LED2  2
  99. #define OFF   0
  100. #define ON    1
  101. #define BLINK 2
  102. #define GPIO1 1
  103. #define GPIO2 2
  104. #define GPIO3 3
  105. #define GPIO4 4
  106. #define LOW   0
  107. #define HIGH  1
  108.  
  109. /*
  110.  * ----------------------------------------------------------------------------
  111.  * Exported functions
  112.  * ----------------------------------------------------------------------------
  113.  */
  114.  
  115. /* Draw from VBUS:
  116.  *   0 mA -- DON'T DRAW (might supply power instead)
  117.  * 100 mA -- usb unit load (slowest charge rate)
  118.  * 500 mA -- usb high power (fast battery charge)
  119.  */
  120. extern int tps65010_set_vbus_draw(unsigned mA);
  121.  
  122. /* tps65010_set_gpio_out_value parameter:
  123.  * gpio:  GPIO1, GPIO2, GPIO3 or GPIO4
  124.  * value: LOW or HIGH
  125.  */
  126. extern int tps65010_set_gpio_out_value(unsigned gpio, unsigned value);
  127.  
  128. /* tps65010_set_led parameter:
  129.  * led:  LED1 or LED2
  130.  * mode: ON, OFF or BLINK
  131.  */
  132. extern int tps65010_set_led(unsigned led, unsigned mode);
  133.  
  134. /* tps65010_set_vib parameter:
  135.  * value: ON or OFF
  136.  */
  137. extern int tps65010_set_vib(unsigned value);
  138.  
  139. /* tps65010_set_low_pwr parameter:
  140.  * mode: ON or OFF
  141.  */
  142. extern int tps65010_set_low_pwr(unsigned mode);
  143.  
  144. /* tps65010_config_vregs1 parameter:
  145.  * value to be written to VREGS1 register
  146.  * Note: The complete register is written, set all bits you need
  147.  */
  148. extern int tps65010_config_vregs1(unsigned value);
  149.  
  150. /* tps65013_set_low_pwr parameter:
  151.  * mode: ON or OFF
  152.  */
  153. extern int tps65013_set_low_pwr(unsigned mode);
  154.  
  155.  
  156. struct i2c_client;
  157.  
  158. /**
  159.  * struct tps65010_board - packages GPIO and LED lines
  160.  * @base: the GPIO number to assign to GPIO-1
  161.  * @outmask: bit (N-1) is set to allow GPIO-N to be used as an
  162.  *    (open drain) output
  163.  * @setup: optional callback issued once the GPIOs are valid
  164.  * @teardown: optional callback issued before the GPIOs are invalidated
  165.  * @context: optional parameter passed to setup() and teardown()
  166.  *
  167.  * Board data may be used to package the GPIO (and LED) lines for use
  168.  * in by the generic GPIO and LED frameworks.  The first four GPIOs
  169.  * starting at gpio_base are GPIO1..GPIO4.  The next two are LED1/nPG
  170.  * and LED2 (with hardware blinking capability, not currently exposed).
  171.  *
  172.  * The @setup callback may be used with the kind of board-specific glue
  173.  * which hands the (now-valid) GPIOs to other drivers, or which puts
  174.  * devices in their initial states using these GPIOs.
  175.  */
  176. struct tps65010_board {
  177.     int                base;
  178.     unsigned            outmask;
  179.  
  180.     int        (*setup)(struct i2c_client *client, void *context);
  181.     int        (*teardown)(struct i2c_client *client, void *context);
  182.     void        *context;
  183. };
  184.  
  185. #endif /*  __LINUX_I2C_TPS65010_H */
  186.  
  187.